/* IF2030 - Algorirma dan Struktur Data */
/* Kelas/Kelompok/Tahun  : 03/09/2011 */
/* Tanggal   : 2 Desember 2011 */
/* File      : mesinargumen.h */
/* Deskripsi : Mesin Argumen untuk pemecah string argumen */

#ifndef MESINARGUMEN_H
#define MESINARGUMEN_H
#include "../mesinkarstr/mesinkarstr.h"
#include "../string/string.h"

#define BLANK ' '

/* TabKata adalah tempat penampung/container kata,
indeks pengisian karakter dimulai dari 0,
Length menyatakan panjangnya kata */

/* State Mesin Kata */
extern boolean EndArg;
extern string CArg;

void IgnoreBlank();
/* Mengabaikan satu atau beberapa BLANK
I.S. : CC sembarang
F.S. : CC != BLANK atau CC = MARK */

void STARTARG(line str);
/* I.S. : CC sembarang
F.S. : EndArg = true, dan CC = Mark;
atau EndArg = false, CArg adalah kata yang sudah
diakuisisi,
CC karakter pertama sesudah karakter terakhir kata */

void ADVARG();
/* I.S. : CC adalah karakter pertama kata yang akan diakuisisi
F.S. : CArg adalah kata terakhir yang sudah diakuisisi,
CC adalah karakter pertama dari kata berikutnya,
mungkin MARK
Proses : Akuisisi kata menggunakan procedure SalinArg */

void SalinArg();
/* Mengakuisisi kata, menyimpan dalam CArg
I.S. : CC adalah karakter pertama dari kata
F.S. : CArg berisi kata yang sudah diakuisisi;
CC = BLANK atau CC = MARK;
CC adalah karakter sesudah karakter terakhir yang
diakuisisi */

#endif
